home *** CD-ROM | disk | FTP | other *** search
- PROGRAM Pic_Bld;
- { CONVERTS PC-DEMO PICTURES TO BASIC BLOAD FORMAT }
-
- CONST
- Columns40 = 40; { COLUMNS FROM 1 TO 40 }
- Columns80 = 80; { COLUMNS FROM 1 TO 80 }
- LastLine = 25; { LINES FROM 1 TO 25 }
- MaxtString = 76; { MAX CHARS IN FILE NAME W/ PATH AND EXT }
- FourKB = 4000; { FILE SIZE OF 80-COLUMN PICTURE }
- TwoKB = 2000; { FILE SIZE OF 40-COLUMN PICTURE }
- Page40 = 2048; { OFFSET FOR MULTIPLE PAGES IN 40-COL }
- Page80 = 4096; { OFFSET FOR MULTIPLE PAGES IN 80-COL }
- BloadCode = 253; { FIRST BYTE OF A .BLD FILE }
- EndOfFile = 026; { ASCII CODE FOR END OF FILE IN .BLD FILE }
- BloadExt = '.BLD'; { FILE EXTENSION FOR BLOAD FILES }
- PictureExt = '.PIC'; { FILE EXTENSION FOR FULL PICTURES }
- Null = ''; { NULL STRING }
-
- TYPE
- N_PictureType = ARRAY [1..LastLine, 1..Columns40] OF Integer;
- { ARRAY OF 40-COLUMN PICTURE DATA }
- W_PictureType = ARRAY [1..LastLine, 1..Columns80] OF Integer;
- { ARRAY OF 80-COLUMN PICTURE DATA }
-
- N_BloadType = ARRAY [1..Page40] OF Byte;
- { ARRAY OF 40-COLUMN BLOAD FILE DATA }
- W_BloadType = ARRAY [1..Page80] OF Byte;
- { ARRAY OF 80-COLUMN BLOAD FILE DATA }
-
- ParString = String [255];
- { VARIABLE LENGTH STRING PARAMETER TYPE }
-
- VAR
- I : Byte;
-
- Size : Integer;
-
- IName,
- OName : ParString;
-
- W_Picture : W_PictureType;
- { THE 80-COLUMN PICTURE }
-
- N_Picture : N_PictureType Absolute W_Picture;
- { THE 40-COLUMN PICTURE }
-
- W_OutData : W_BloadType;
- N_OutData : N_BloadType Absolute W_OutData;
-
- N_InFile : FILE OF N_PictureType;
- W_InFile : FILE OF W_PictureType;
-
- N_OutFile : FILE OF N_BloadType;
- W_OutFile : FILE OF W_BloadType;
-
- TestFile : FILE OF Byte;
-
- N_InPtr : ^ N_PictureType;
- W_InPtr : ^ W_PictureType;
-
-
- FUNCTION Exist (FileName : ParString) : Boolean;
- { SEES IF A FILE EXISTS }
-
- VAR
- TestFile : FILE;
-
- BEGIN { Exist }
- Assign (TestFile, FileName);
-
- {$I-}
-
- Reset (TestFile);
-
- {$I+}
-
- Exist := (IOResult = 0);
- Close (TestFile);
- END; { Exist }
-
-
-
- PROCEDURE ConvertCase (VAR Strng : ParString);
- { CONVERTS STRINGS TO UPPER CASE }
-
- VAR
- I : Byte;
-
- BEGIN { ConvertCase }
- FOR I := 1 TO Length (Strng) DO
- Strng [I] := UpCase (Strng [I]);
- END; { ConvertCase }
-
-
- BEGIN { Pic_Bld }
- IName := Null;
- IF ParamCount = 0
- THEN
- BEGIN
- Writeln ('Command must be of form: PIC_BLD <name>');
- Exit;
- END;
- IName := ParamStr (1);
- Convertcase (IName);
- OName := IName + BloadExt;
- IName := IName + PictureExt;
- IF NOT Exist (IName)
- THEN
- BEGIN
- Writeln ('ERROR! File not found ' + IName);
- Exit;
- END;
- Assign (TestFile, IName);
- Reset (TestFile);
- Size := FileSize (TestFile);
- Close (TestFile);
- IF NOT ((Size = TwoKB) OR (Size = FourKB))
- THEN
- BEGIN
- Writeln ('ERROR! File wrong size.');
- Exit;
- END;
- IF Size = TwoKB
- THEN
- BEGIN
- N_OutData [1] := BloadCode; { BLOAD FILE IDENTIFIER }
- N_OutData [6] := Size MOD $100; { FILE SIZE }
- N_OutData [7] := Size DIV $100; { FILE SIZE }
- Assign (N_InFile, IName);
- Reset (N_InFile);
- Read (N_InFile, N_Picture);
- N_InPtr := Ptr (Seg (N_OutData), Ofs (N_OutData) + 7);
- N_InPtr ^ := N_Picture; { TRANSFER PICTURE DATA }
- N_OutData [2008] := EndOfFile; { MARK END OF FILE }
- Assign (N_OutFile, OName);
- Rewrite (N_OutFile);
- Write (N_OutFile, N_OutData);
- Close (N_InFile);
- Close (N_OutFile);
- END
- ELSE
- BEGIN
- W_OutData [1] := BloadCode; { BLOAD FILE IDENTIFIER }
- W_OutData [6] := Size MOD $100; { FILE SIZE }
- W_OutData [7] := Size DIV $100; { FILE SIZE }
- Assign (W_InFile, IName);
- Reset (W_InFile);
- Read (W_InFile, W_Picture);
- W_InPtr := Ptr (Seg (W_OutData), Ofs (W_OutData) + 7);
- W_InPtr ^ := W_Picture; { TRANSFER PICTURE DATA }
- W_OutData [4008] := EndOfFile; { MARK END OF FILE }
- Assign (W_OutFile, OName);
- Rewrite (W_OutFile);
- Write (W_OutFile, W_OutData);
- Close (W_InFile);
- Close (W_OutFile);
- END;
- Writeln ('File ' + OName + ' created');
- END. { Pic_Bld }